//OOkay!
//testestes

//package frogger nada: Daniel

package Frogger;
//teste
//Declaracao das Importacoes TESTE
import java.awt.*;
import javax.swing.*;

public class Frogger extends JFrame{
//dianagoncalves XD

    /** Thread que Gera a Imagem Off-Screen */
    private GerenciadorImagem oGerenciadorImagem;

    /** Timer que controla o Tempo de Atrvaessia do Sapo */
    private Timer tempo;

    /** Veriavel que controla o Tempo Restante de Atravessia do Sapo */
    private int tempoRestante = 45;

    // alteracao: fagmario

    /** Metodo de Criacao do Frame */
    public Frogger(){

        // Propriedades Iniciais do Frame
        this.setSize(400, 400);
        this.setResizable(false);
        this.setTitle("Frogger v1.0");

        /** INICIO das Declaracoes dos Eventos do Frame */

            /** Evento para Fechar a Janela */
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            /** Evento para Ler as Teclas do Teclado */
            this.addKeyListener(new java.awt.event.KeyAdapter(){
                public void keyPressed(java.awt.event.KeyEvent Evento){
                    leituraTeclado(Evento);
                }
            });

        /** FIM das Declaracoes dos Eventos do Frame */

        /** Timer para o calculo do Tempo Restante para a Atravecia */
        this.tempo = new Timer (1000, new java.awt.event.ActionListener(){
            public void actionPerformed(java.awt.event.ActionEvent evento){
                tempoAtravecia(evento);
            }
        });

            /** Inicio da Criacao das Threads */
                this.oGerenciadorImagem = new GerenciadorImagem(this, this.getGraphicsConfiguration());
            /** FIM da Criacao das Threads */
    }

    /** Libera a Thread para redezenhar quando nescessario */
    public void paint(Graphics grafico) {
        if (this.oGerenciadorImagem != null){
            this.oGerenciadorImagem.liberarThread();
        }
    }

    /** Metodo que calcula o Tempo Restante para a Atravecia */
    private void tempoAtravecia(java.awt.event.ActionEvent evento){
        this.tempoRestante--;

        /** Verificando se o Tempo Acabou */
        if (this.tempoRestante == 0){
            this.oGerenciadorImagem.tempoEsgotado();
            this.tempo.stop();
        }
    }

    /** Metdo que Inicia o Timer */
    public void iniciarTimer(){
        this.tempoRestante = 45;
        this.tempo.start();
    }

    /** Metodo que Para o Timer */
    public void pararTimer(){
        this.tempo.stop();
    }

    /** Metodo que Retorna o VAlor do Tempo Restante */
    public int getTempoRestante(){
        return this.tempoRestante;
    }

    /** Metodo para Verificar a Tecla Precionada */
    private void leituraTeclado(java.awt.event.KeyEvent Evento){
        this.oGerenciadorImagem.entradaEvento(Evento);
    }

    /** Metodo Principal da Classe */
    public static void main(String args[]){
        // Criando o Frame
        new Frogger();

        //testando alguma coisa: Daniel
    }
}